গ্রুপিং এর সাথে অ্যাগ্রিগেশন (Group By এবং Aggregates)

Microsoft Technologies - লিংক (LinQ) LINQ এ অ্যাগ্রিগেশন অপারেশন (Aggregation Operations in LINQ) |
156
156

LINQ তে Group By এবং Aggregates মেথড দুটি অত্যন্ত শক্তিশালী টুল, যা ডেটাকে গ্রুপ করে তার উপর বিভিন্ন ধরনের অ্যাগ্রিগেশন (যেমন গড়, যোগফল, গুণফল ইত্যাদি) অপারেশন প্রয়োগ করতে ব্যবহৃত হয়। এটি ডেটা সেটের মধ্যে সম্পর্কিত উপাদানগুলিকে একটি গ্রুপে ভাগ করে তাদের উপর গণনা করার সুবিধা দেয়।


Group By (গ্রুপিং)

Group By মেথডটি একটি সংগ্রহকে নির্দিষ্ট একটি কন্ডিশনের ভিত্তিতে গ্রুপ করতে ব্যবহৃত হয়। এটি একটি গ্রুপড সংগ্রহ তৈরি করে, যেখানে প্রতিটি গ্রুপের উপাদানগুলি একটি নির্দিষ্ট কন্ডিশন অনুসারে সাজানো হয়। উদাহরণস্বরূপ, আপনি একটি লিস্টকে তাদের বয়স, বিভাগ বা অন্যান্য প্রপার্টির ভিত্তিতে গ্রুপ করতে পারেন।

Group By ব্যবহার (Query Syntax)

Query Syntax-এ Group By ব্যবহার করা হয় group কিওয়ার্ডের মাধ্যমে। এটি একটি গ্রুপড সংগ্রহ তৈরি করে, যা গ্রুপের কন্ডিশন অনুযায়ী সাজানো হয়।

উদাহরণ:

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, Department = "HR" },
    new Person { Name = "Bob", Age = 30, Department = "IT" },
    new Person { Name = "Charlie", Age = 35, Department = "HR" },
    new Person { Name = "David", Age = 28, Department = "IT" },
    new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};

// বিভাগ অনুসারে গ্রুপিং
var groupedByDepartment = from person in people
                          group person by person.Department;

foreach (var group in groupedByDepartment)
{
    Console.WriteLine($"Department: {group.Key}");
    foreach (var person in group)
    {
        Console.WriteLine($"  Name: {person.Name}, Age: {person.Age}");
    }
}

এখানে, group person by person.Department দ্বারা Department প্রপার্টির ভিত্তিতে গ্রুপ করা হয়েছে। ফলস্বরূপ, "HR", "IT", এবং "Marketing" বিভাগে থাকা ব্যক্তিদের নাম ও বয়স প্রিন্ট করা হবে।


Group By ব্যবহার (Method Syntax)

Method Syntax-এ GroupBy() মেথডটি ব্যবহার করা হয়, যা একটি Lambda Expression গ্রহণ করে। এখানে কন্ডিশন অনুযায়ী ডেটাকে গ্রুপ করা হয়।

উদাহরণ:

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, Department = "HR" },
    new Person { Name = "Bob", Age = 30, Department = "IT" },
    new Person { Name = "Charlie", Age = 35, Department = "HR" },
    new Person { Name = "David", Age = 28, Department = "IT" },
    new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};

// বিভাগ অনুসারে গ্রুপিং
var groupedByDepartment = people.GroupBy(p => p.Department);

foreach (var group in groupedByDepartment)
{
    Console.WriteLine($"Department: {group.Key}");
    foreach (var person in group)
    {
        Console.WriteLine($"  Name: {person.Name}, Age: {person.Age}");
    }
}

এখানে, GroupBy(p => p.Department) ব্যবহার করা হয়েছে ডেটাকে Department অনুসারে গ্রুপ করার জন্য।


গ্রুপিং এর সাথে অ্যাগ্রিগেশন (Aggregation with Group By)

Group By এর সাথে Aggregation মেথডগুলো যেমন Count, Sum, Average, Min, Max ব্যবহার করে আপনি প্রতিটি গ্রুপের উপর গণনা বা পরিসংখ্যানিক অপারেশন করতে পারেন।

গ্রুপিংয়ের সাথে Count (গ্রুপের সদস্য সংখ্যা বের করা)

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, Department = "HR" },
    new Person { Name = "Bob", Age = 30, Department = "IT" },
    new Person { Name = "Charlie", Age = 35, Department = "HR" },
    new Person { Name = "David", Age = 28, Department = "IT" },
    new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};

// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি গ্রুপের সদস্য সংখ্যা বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
                                .Select(g => new
                                {
                                    Department = g.Key,
                                    Count = g.Count()
                                });

foreach (var group in groupedByDepartment)
{
    Console.WriteLine($"Department: {group.Department}, Count: {group.Count}");
}

এখানে, g.Count() দ্বারা প্রতিটি বিভাগের সদস্য সংখ্যা বের করা হয়েছে।


গ্রুপিংয়ের সাথে Sum (গ্রুপের যোগফল বের করা)

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, Department = "HR" },
    new Person { Name = "Bob", Age = 30, Department = "IT" },
    new Person { Name = "Charlie", Age = 35, Department = "HR" },
    new Person { Name = "David", Age = 28, Department = "IT" },
    new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};

// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি বিভাগের গড় বয়স বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
                                .Select(g => new
                                {
                                    Department = g.Key,
                                    TotalAge = g.Sum(p => p.Age)
                                });

foreach (var group in groupedByDepartment)
{
    Console.WriteLine($"Department: {group.Department}, Total Age: {group.TotalAge}");
}

এখানে, g.Sum(p => p.Age) ব্যবহার করে প্রতিটি বিভাগের মোট বয়স বের করা হয়েছে।


গ্রুপিংয়ের সাথে Average (গ্রুপের গড় বের করা)

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, Department = "HR" },
    new Person { Name = "Bob", Age = 30, Department = "IT" },
    new Person { Name = "Charlie", Age = 35, Department = "HR" },
    new Person { Name = "David", Age = 28, Department = "IT" },
    new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};

// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি বিভাগের গড় বয়স বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
                                .Select(g => new
                                {
                                    Department = g.Key,
                                    AverageAge = g.Average(p => p.Age)
                                });

foreach (var group in groupedByDepartment)
{
    Console.WriteLine($"Department: {group.Department}, Average Age: {group.AverageAge}");
}

এখানে, g.Average(p => p.Age) ব্যবহার করে প্রতিটি বিভাগের গড় বয়স বের করা হয়েছে।


গ্রুপিংয়ের সাথে Min এবং Max (গ্রুপের সর্বনিম্ন ও সর্বোচ্চ মান বের করা)

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, Department = "HR" },
    new Person { Name = "Bob", Age = 30, Department = "IT" },
    new Person { Name = "Charlie", Age = 35, Department = "HR" },
    new Person { Name = "David", Age = 28, Department = "IT" },
    new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};

// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি বিভাগের সর্বনিম্ন ও সর্বোচ্চ বয়স বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
                                .Select(g => new
                                {
                                    Department = g.Key,
                                    MinAge = g.Min(p => p.Age),
                                    MaxAge = g.Max(p => p.Age)
                                });

foreach (var group in groupedByDepartment)
{
    Console.WriteLine($"Department: {group.Department}, Min Age: {group.MinAge}, Max Age: {group.MaxAge}");
}

এখানে, g.Min(p => p.Age) এবং g.Max(p => p.Age) ব্যবহার করে প্রতিটি বিভাগের সর্বনিম্ন এবং সর্বোচ্চ বয়স বের করা হয়েছে।


সারাংশ

Group By এবং Aggregation Methods ব্যবহারের মাধ্যমে আপনি ডেটাকে একটি নির্দিষ্ট কন্ডিশনের ভিত্তিতে গ্রুপ করতে এবং পরবর্তীতে প্রতিটি গ্রুপের উপর বিভিন্ন গণনা অপারেশন (যেমন Count, Sum, Average, Min, Max) প্রয়োগ করতে পারেন। এর মাধ্যমে ডেটার উপর আরও গভীর এবং অর্থপূর্ণ বিশ্লেষণ করা সম্ভব।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion